package com.yuand.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 用户实体
 * @ClassName: User
 * @Author: yuandong
 * @Date 2022/1/14 15:08
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("sys_user")
public class SysUser extends BaseEntity {
    private static final long serialVersionUID = -40356785423868312L;

    /**
     * 主键
     */
    @TableId(value = "user_id", type = IdType.AUTO)
    private Long userId;
    /**
     * 用户名
     */
    private String username;
    /**
     * 昵称
     */
    private String nickName;
    /**
     * 密码
     */
    private String password;

    /**
     * 年龄
     */
    private Integer age;


    /**
     * 账号状态（0正常 1停用）
     */
    private String status;

    /**
     * 手机号
     */
    private String phone;
    /**
     * 用户性别（0男，1女，2未知）
     */
    private String sex;
    /**
     * 头像
     */
    private String avatar;
    /**
     * 用户类型（0管理员，1普通用户）
     */
    private String userType;

    /**
     * 删除标志（0代表未删除，1代表已删除）
     */
    private Integer delFlag;


    @TableField(exist = false)
    private Long roleId;  //用户角色

    @TableField(exist = false)
    private String roleName;  //用户角色名称

    @TableField(exist = false)
    private List<SysRole> roleList;

    /** 角色组 */
    @TableField(exist = false)
    private Long[] roleIds;

    /**
     * 判断用户是否是超管用户，这个方法其实是一个傀儡，真正调用的是下面的静态方法
     * @return
     */
    public boolean isAdmin()
    {
        return isAdmin(this.userId);
    }

    /**
     * 这个才是真正执行的方法，并且是静态的
     * @param userId
     * @return
     */
    public static boolean isAdmin(Long userId)
    {
        return userId != null && 1L == userId;
    }

}
